package model

import (
	"fmt"
	"gorm.io/gorm"
	"time"
)

type _WkbUsersMgr struct {
	*_BaseMgr
}

// WkbUsersMgr open func
func WkbUsersMgr(db *gorm.DB) *_WkbUsersMgr {
	if db == nil {
		panic(fmt.Errorf("WkbUsersMgr need init by db"))
	}
	ctx, cancel := context.WithCancel(context.Background())
	return &_WkbUsersMgr{_BaseMgr: &_BaseMgr{DB: db.Table("wkb_users"), isRelated: globalIsRelated, ctx: ctx, cancel: cancel, timeout: -1}}
}

// GetTableName get sql table name.获取数据库名字
func (obj *_WkbUsersMgr) GetTableName() string {
	return "wkb_users"
}

// Get 获取
func (obj *_WkbUsersMgr) Get() (result WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Find(&result).Error

	return
}

// Gets 获取批量结果
func (obj *_WkbUsersMgr) Gets() (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Find(&results).Error

	return
}

//////////////////////////option case ////////////////////////////////////////////

// WithID id获取 用户编号
func (obj *_WkbUsersMgr) WithID(id int) Option {
	return optionFunc(func(o *options) { o.query["id"] = id })
}

// WithUserIDDiy user_id_diy获取 用户自定义id
func (obj *_WkbUsersMgr) WithUserIDDiy(userIDDiy string) Option {
	return optionFunc(func(o *options) { o.query["user_id_diy"] = userIDDiy })
}

// WithSysType sys_type获取 默认0为本站添加,其它为外部添加
func (obj *_WkbUsersMgr) WithSysType(sysType int8) Option {
	return optionFunc(func(o *options) { o.query["sys_type"] = sysType })
}

// WithName name获取 用户名
func (obj *_WkbUsersMgr) WithName(name string) Option {
	return optionFunc(func(o *options) { o.query["name"] = name })
}

// WithMobile mobile获取 新加手机号
func (obj *_WkbUsersMgr) WithMobile(mobile string) Option {
	return optionFunc(func(o *options) { o.query["mobile"] = mobile })
}

// WithEmail email获取 用户邮箱
func (obj *_WkbUsersMgr) WithEmail(email string) Option {
	return optionFunc(func(o *options) { o.query["email"] = email })
}

// WithEmailStatus email_status获取 用户邮箱认证状态0：未认证1：待验证2：已经认证
func (obj *_WkbUsersMgr) WithEmailStatus(emailStatus int8) Option {
	return optionFunc(func(o *options) { o.query["email_status"] = emailStatus })
}

// WithPassword password获取 用户密码
func (obj *_WkbUsersMgr) WithPassword(password string) Option {
	return optionFunc(func(o *options) { o.query["password"] = password })
}

// WithAlternatePassword alternate_password获取 支付密码
func (obj *_WkbUsersMgr) WithAlternatePassword(alternatePassword string) Option {
	return optionFunc(func(o *options) { o.query["alternate_password"] = alternatePassword })
}

// WithSalt salt获取 随机码
func (obj *_WkbUsersMgr) WithSalt(salt string) Option {
	return optionFunc(func(o *options) { o.query["salt"] = salt })
}

// WithStatus status获取 账户状态 0：未激活 1：已激活 2：禁用
func (obj *_WkbUsersMgr) WithStatus(status int8) Option {
	return optionFunc(func(o *options) { o.query["status"] = status })
}

// WithUsersType users_type获取 用户类型:1雇主 2威客
func (obj *_WkbUsersMgr) WithUsersType(usersType int8) Option {
	return optionFunc(func(o *options) { o.query["users_type"] = usersType })
}

// WithAuthType auth_type获取 认证类型：1个人 2公司
func (obj *_WkbUsersMgr) WithAuthType(authType string) Option {
	return optionFunc(func(o *options) { o.query["auth_type"] = authType })
}

// WithProfession profession获取 专业
func (obj *_WkbUsersMgr) WithProfession(profession string) Option {
	return optionFunc(func(o *options) { o.query["profession"] = profession })
}

// WithGoodAt good_at获取 擅长
func (obj *_WkbUsersMgr) WithGoodAt(goodAt string) Option {
	return optionFunc(func(o *options) { o.query["good_at"] = goodAt })
}

// WithAbstract abstract获取 个人简介
func (obj *_WkbUsersMgr) WithAbstract(abstract string) Option {
	return optionFunc(func(o *options) { o.query["abstract"] = abstract })
}

// WithOverdueDate overdue_date获取 找回密码邮件过期时间
func (obj *_WkbUsersMgr) WithOverdueDate(overdueDate time.Time) Option {
	return optionFunc(func(o *options) { o.query["overdue_date"] = overdueDate })
}

// WithValidationCode validation_code获取 找回密码随机码
func (obj *_WkbUsersMgr) WithValidationCode(validationCode string) Option {
	return optionFunc(func(o *options) { o.query["validation_code"] = validationCode })
}

// WithExpireDate expire_date获取 重置密码邮件过期时间
func (obj *_WkbUsersMgr) WithExpireDate(expireDate time.Time) Option {
	return optionFunc(func(o *options) { o.query["expire_date"] = expireDate })
}

// WithResetPasswordCode reset_password_code获取 重置密码验证随机码
func (obj *_WkbUsersMgr) WithResetPasswordCode(resetPasswordCode string) Option {
	return optionFunc(func(o *options) { o.query["reset_password_code"] = resetPasswordCode })
}

// WithRememberToken remember_token获取
func (obj *_WkbUsersMgr) WithRememberToken(rememberToken string) Option {
	return optionFunc(func(o *options) { o.query["remember_token"] = rememberToken })
}

// WithLastLoginTime last_login_time获取 最后一次登录时间
func (obj *_WkbUsersMgr) WithLastLoginTime(lastLoginTime time.Time) Option {
	return optionFunc(func(o *options) { o.query["last_login_time"] = lastLoginTime })
}

// WithSource source获取 注册来源 1-来自pc 2-来自手机
func (obj *_WkbUsersMgr) WithSource(source int8) Option {
	return optionFunc(func(o *options) { o.query["source"] = source })
}

// WithIsEmployee is_employee获取 0 普通用户（自由注册）， 1 员工， 2 老板 3 普通用户（通过分享注册）通过分享注册的用户状态为1
func (obj *_WkbUsersMgr) WithIsEmployee(isEmployee int8) Option {
	return optionFunc(func(o *options) { o.query["is_employee"] = isEmployee })
}

// WithShareNum share_num获取 //用户分享码
func (obj *_WkbUsersMgr) WithShareNum(shareNum string) Option {
	return optionFunc(func(o *options) { o.query["share_num"] = shareNum })
}

// WithShareUId share_uid获取 邀请当前用户id
func (obj *_WkbUsersMgr) WithShareUId(shareUId int) Option {
	return optionFunc(func(o *options) { o.query["share_uid"] = shareUId })
}

// WithIsShareMoney is_share_money获取 是否已经给分享人打款
func (obj *_WkbUsersMgr) WithIsShareMoney(isShareMoney int8) Option {
	return optionFunc(func(o *options) { o.query["is_share_money"] = isShareMoney })
}

// WithShareMoney share_money获取 分享获得的金额
func (obj *_WkbUsersMgr) WithShareMoney(shareMoney float64) Option {
	return optionFunc(func(o *options) { o.query["share_money"] = shareMoney })
}

// WithWechatOpenid wechat_openid获取 第三方登陆 微信授权openid
func (obj *_WkbUsersMgr) WithWechatOpenid(wechatOpenid string) Option {
	return optionFunc(func(o *options) { o.query["wechat_openid"] = wechatOpenid })
}

// WithUnionID union_id获取 开放平台与公众平台 UnionID
func (obj *_WkbUsersMgr) WithUnionID(unionID string) Option {
	return optionFunc(func(o *options) { o.query["union_id"] = unionID })
}

// WithIsSubscribe is_subscribe获取 是否关注 1是 0否
func (obj *_WkbUsersMgr) WithIsSubscribe(isSubscribe int8) Option {
	return optionFunc(func(o *options) { o.query["is_subscribe"] = isSubscribe })
}

// WithIsMovie is_movie获取 是否在直播1是,0否
func (obj *_WkbUsersMgr) WithIsMovie(isMovie bool) Option {
	return optionFunc(func(o *options) { o.query["is_movie"] = isMovie })
}

// WithSugarGift sugar_gift获取 是否发放礼品 1是 0否
func (obj *_WkbUsersMgr) WithSugarGift(sugarGift int8) Option {
	return optionFunc(func(o *options) { o.query["sugar_gift"] = sugarGift })
}

// WithCreatedAt created_at获取 创建时间
func (obj *_WkbUsersMgr) WithCreatedAt(createdAt time.Time) Option {
	return optionFunc(func(o *options) { o.query["created_at"] = createdAt })
}

// WithUpdatedAt updated_at获取 更新时间
func (obj *_WkbUsersMgr) WithUpdatedAt(updatedAt time.Time) Option {
	return optionFunc(func(o *options) { o.query["updated_at"] = updatedAt })
}

// WithImUserType im_user_type获取 用户类型:1=普通用户,2=客服
func (obj *_WkbUsersMgr) WithImUserType(imUserType int8) Option {
	return optionFunc(func(o *options) { o.query["im_user_type"] = imUserType })
}

// GetByOption 功能选项模式获取
func (obj *_WkbUsersMgr) GetByOption(opts ...Option) (result WkbUsers, err error) {
	options := options{
		query: make(map[string]interface{}, len(opts)),
	}
	for _, o := range opts {
		o.apply(&options)
	}

	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where(options.query).Find(&result).Error

	return
}

// GetByOptions 批量功能选项模式获取
func (obj *_WkbUsersMgr) GetByOptions(opts ...Option) (results []*WkbUsers, err error) {
	options := options{
		query: make(map[string]interface{}, len(opts)),
	}
	for _, o := range opts {
		o.apply(&options)
	}

	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where(options.query).Find(&results).Error

	return
}

//////////////////////////enume case ////////////////////////////////////////////

// GetFromID 通过id获取内容 用户编号
func (obj *_WkbUsersMgr) GetFromID(id int) (result WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("id = ?", id).Find(&result).Error

	return
}

// GetBatchFromID 批量唯一主键查找 用户编号
func (obj *_WkbUsersMgr) GetBatchFromID(ids []int) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("id IN (?)", ids).Find(&results).Error

	return
}

// GetFromUserIDDiy 通过user_id_diy获取内容 用户自定义id
func (obj *_WkbUsersMgr) GetFromUserIDDiy(userIDDiy string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("user_id_diy = ?", userIDDiy).Find(&results).Error

	return
}

// GetBatchFromUserIDDiy 批量唯一主键查找 用户自定义id
func (obj *_WkbUsersMgr) GetBatchFromUserIDDiy(userIDDiys []string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("user_id_diy IN (?)", userIDDiys).Find(&results).Error

	return
}

// GetFromSysType 通过sys_type获取内容 默认0为本站添加,其它为外部添加
func (obj *_WkbUsersMgr) GetFromSysType(sysType int8) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("sys_type = ?", sysType).Find(&results).Error

	return
}

// GetBatchFromSysType 批量唯一主键查找 默认0为本站添加,其它为外部添加
func (obj *_WkbUsersMgr) GetBatchFromSysType(sysTypes []int8) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("sys_type IN (?)", sysTypes).Find(&results).Error

	return
}

// GetFromName 通过name获取内容 用户名
func (obj *_WkbUsersMgr) GetFromName(name string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("name = ?", name).Find(&results).Error

	return
}

// GetBatchFromName 批量唯一主键查找 用户名
func (obj *_WkbUsersMgr) GetBatchFromName(names []string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("name IN (?)", names).Find(&results).Error

	return
}

// GetFromMobile 通过mobile获取内容 新加手机号
func (obj *_WkbUsersMgr) GetFromMobile(mobile string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("mobile = ?", mobile).Find(&results).Error

	return
}

// GetBatchFromMobile 批量唯一主键查找 新加手机号
func (obj *_WkbUsersMgr) GetBatchFromMobile(mobiles []string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("mobile IN (?)", mobiles).Find(&results).Error

	return
}

// GetFromEmail 通过email获取内容 用户邮箱
func (obj *_WkbUsersMgr) GetFromEmail(email string) (result WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("email = ?", email).Find(&result).Error

	return
}

// GetBatchFromEmail 批量唯一主键查找 用户邮箱
func (obj *_WkbUsersMgr) GetBatchFromEmail(emails []string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("email IN (?)", emails).Find(&results).Error

	return
}

// GetFromEmailStatus 通过email_status获取内容 用户邮箱认证状态0：未认证1：待验证2：已经认证
func (obj *_WkbUsersMgr) GetFromEmailStatus(emailStatus int8) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("email_status = ?", emailStatus).Find(&results).Error

	return
}

// GetBatchFromEmailStatus 批量唯一主键查找 用户邮箱认证状态0：未认证1：待验证2：已经认证
func (obj *_WkbUsersMgr) GetBatchFromEmailStatus(emailStatuss []int8) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("email_status IN (?)", emailStatuss).Find(&results).Error

	return
}

// GetFromPassword 通过password获取内容 用户密码
func (obj *_WkbUsersMgr) GetFromPassword(password string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("password = ?", password).Find(&results).Error

	return
}

// GetBatchFromPassword 批量唯一主键查找 用户密码
func (obj *_WkbUsersMgr) GetBatchFromPassword(passwords []string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("password IN (?)", passwords).Find(&results).Error

	return
}

// GetFromAlternatePassword 通过alternate_password获取内容 支付密码
func (obj *_WkbUsersMgr) GetFromAlternatePassword(alternatePassword string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("alternate_password = ?", alternatePassword).Find(&results).Error

	return
}

// GetBatchFromAlternatePassword 批量唯一主键查找 支付密码
func (obj *_WkbUsersMgr) GetBatchFromAlternatePassword(alternatePasswords []string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("alternate_password IN (?)", alternatePasswords).Find(&results).Error

	return
}

// GetFromSalt 通过salt获取内容 随机码
func (obj *_WkbUsersMgr) GetFromSalt(salt string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("salt = ?", salt).Find(&results).Error

	return
}

// GetBatchFromSalt 批量唯一主键查找 随机码
func (obj *_WkbUsersMgr) GetBatchFromSalt(salts []string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("salt IN (?)", salts).Find(&results).Error

	return
}

// GetFromStatus 通过status获取内容 账户状态 0：未激活 1：已激活 2：禁用
func (obj *_WkbUsersMgr) GetFromStatus(status int8) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("status = ?", status).Find(&results).Error

	return
}

// GetBatchFromStatus 批量唯一主键查找 账户状态 0：未激活 1：已激活 2：禁用
func (obj *_WkbUsersMgr) GetBatchFromStatus(statuss []int8) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("status IN (?)", statuss).Find(&results).Error

	return
}

// GetFromUsersType 通过users_type获取内容 用户类型:1雇主 2威客
func (obj *_WkbUsersMgr) GetFromUsersType(usersType int8) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("users_type = ?", usersType).Find(&results).Error

	return
}

// GetBatchFromUsersType 批量唯一主键查找 用户类型:1雇主 2威客
func (obj *_WkbUsersMgr) GetBatchFromUsersType(usersTypes []int8) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("users_type IN (?)", usersTypes).Find(&results).Error

	return
}

// GetFromAuthType 通过auth_type获取内容 认证类型：1个人 2公司
func (obj *_WkbUsersMgr) GetFromAuthType(authType string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("auth_type = ?", authType).Find(&results).Error

	return
}

// GetBatchFromAuthType 批量唯一主键查找 认证类型：1个人 2公司
func (obj *_WkbUsersMgr) GetBatchFromAuthType(authTypes []string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("auth_type IN (?)", authTypes).Find(&results).Error

	return
}

// GetFromProfession 通过profession获取内容 专业
func (obj *_WkbUsersMgr) GetFromProfession(profession string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("profession = ?", profession).Find(&results).Error

	return
}

// GetBatchFromProfession 批量唯一主键查找 专业
func (obj *_WkbUsersMgr) GetBatchFromProfession(professions []string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("profession IN (?)", professions).Find(&results).Error

	return
}

// GetFromGoodAt 通过good_at获取内容 擅长
func (obj *_WkbUsersMgr) GetFromGoodAt(goodAt string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("good_at = ?", goodAt).Find(&results).Error

	return
}

// GetBatchFromGoodAt 批量唯一主键查找 擅长
func (obj *_WkbUsersMgr) GetBatchFromGoodAt(goodAts []string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("good_at IN (?)", goodAts).Find(&results).Error

	return
}

// GetFromAbstract 通过abstract获取内容 个人简介
func (obj *_WkbUsersMgr) GetFromAbstract(abstract string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("abstract = ?", abstract).Find(&results).Error

	return
}

// GetBatchFromAbstract 批量唯一主键查找 个人简介
func (obj *_WkbUsersMgr) GetBatchFromAbstract(abstracts []string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("abstract IN (?)", abstracts).Find(&results).Error

	return
}

// GetFromOverdueDate 通过overdue_date获取内容 找回密码邮件过期时间
func (obj *_WkbUsersMgr) GetFromOverdueDate(overdueDate time.Time) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("overdue_date = ?", overdueDate).Find(&results).Error

	return
}

// GetBatchFromOverdueDate 批量唯一主键查找 找回密码邮件过期时间
func (obj *_WkbUsersMgr) GetBatchFromOverdueDate(overdueDates []time.Time) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("overdue_date IN (?)", overdueDates).Find(&results).Error

	return
}

// GetFromValidationCode 通过validation_code获取内容 找回密码随机码
func (obj *_WkbUsersMgr) GetFromValidationCode(validationCode string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("validation_code = ?", validationCode).Find(&results).Error

	return
}

// GetBatchFromValidationCode 批量唯一主键查找 找回密码随机码
func (obj *_WkbUsersMgr) GetBatchFromValidationCode(validationCodes []string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("validation_code IN (?)", validationCodes).Find(&results).Error

	return
}

// GetFromExpireDate 通过expire_date获取内容 重置密码邮件过期时间
func (obj *_WkbUsersMgr) GetFromExpireDate(expireDate time.Time) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("expire_date = ?", expireDate).Find(&results).Error

	return
}

// GetBatchFromExpireDate 批量唯一主键查找 重置密码邮件过期时间
func (obj *_WkbUsersMgr) GetBatchFromExpireDate(expireDates []time.Time) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("expire_date IN (?)", expireDates).Find(&results).Error

	return
}

// GetFromResetPasswordCode 通过reset_password_code获取内容 重置密码验证随机码
func (obj *_WkbUsersMgr) GetFromResetPasswordCode(resetPasswordCode string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("reset_password_code = ?", resetPasswordCode).Find(&results).Error

	return
}

// GetBatchFromResetPasswordCode 批量唯一主键查找 重置密码验证随机码
func (obj *_WkbUsersMgr) GetBatchFromResetPasswordCode(resetPasswordCodes []string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("reset_password_code IN (?)", resetPasswordCodes).Find(&results).Error

	return
}

// GetFromRememberToken 通过remember_token获取内容
func (obj *_WkbUsersMgr) GetFromRememberToken(rememberToken string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("remember_token = ?", rememberToken).Find(&results).Error

	return
}

// GetBatchFromRememberToken 批量唯一主键查找
func (obj *_WkbUsersMgr) GetBatchFromRememberToken(rememberTokens []string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("remember_token IN (?)", rememberTokens).Find(&results).Error

	return
}

// GetFromLastLoginTime 通过last_login_time获取内容 最后一次登录时间
func (obj *_WkbUsersMgr) GetFromLastLoginTime(lastLoginTime time.Time) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("last_login_time = ?", lastLoginTime).Find(&results).Error

	return
}

// GetBatchFromLastLoginTime 批量唯一主键查找 最后一次登录时间
func (obj *_WkbUsersMgr) GetBatchFromLastLoginTime(lastLoginTimes []time.Time) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("last_login_time IN (?)", lastLoginTimes).Find(&results).Error

	return
}

// GetFromSource 通过source获取内容 注册来源 1-来自pc 2-来自手机
func (obj *_WkbUsersMgr) GetFromSource(source int8) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("source = ?", source).Find(&results).Error

	return
}

// GetBatchFromSource 批量唯一主键查找 注册来源 1-来自pc 2-来自手机
func (obj *_WkbUsersMgr) GetBatchFromSource(sources []int8) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("source IN (?)", sources).Find(&results).Error

	return
}

// GetFromIsEmployee 通过is_employee获取内容 0 普通用户（自由注册）， 1 员工， 2 老板 3 普通用户（通过分享注册）通过分享注册的用户状态为1
func (obj *_WkbUsersMgr) GetFromIsEmployee(isEmployee int8) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("is_employee = ?", isEmployee).Find(&results).Error

	return
}

// GetBatchFromIsEmployee 批量唯一主键查找 0 普通用户（自由注册）， 1 员工， 2 老板 3 普通用户（通过分享注册）通过分享注册的用户状态为1
func (obj *_WkbUsersMgr) GetBatchFromIsEmployee(isEmployees []int8) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("is_employee IN (?)", isEmployees).Find(&results).Error

	return
}

// GetFromShareNum 通过share_num获取内容 //用户分享码
func (obj *_WkbUsersMgr) GetFromShareNum(shareNum string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("share_num = ?", shareNum).Find(&results).Error

	return
}

// GetBatchFromShareNum 批量唯一主键查找 //用户分享码
func (obj *_WkbUsersMgr) GetBatchFromShareNum(shareNums []string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("share_num IN (?)", shareNums).Find(&results).Error

	return
}

// GetFromShareUId 通过share_uid获取内容 邀请当前用户id
func (obj *_WkbUsersMgr) GetFromShareUId(shareUId int) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("share_uid = ?", shareUId).Find(&results).Error

	return
}

// GetBatchFromShareUId 批量唯一主键查找 邀请当前用户id
func (obj *_WkbUsersMgr) GetBatchFromShareUId(shareUIds []int) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("share_uid IN (?)", shareUIds).Find(&results).Error

	return
}

// GetFromIsShareMoney 通过is_share_money获取内容 是否已经给分享人打款
func (obj *_WkbUsersMgr) GetFromIsShareMoney(isShareMoney int8) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("is_share_money = ?", isShareMoney).Find(&results).Error

	return
}

// GetBatchFromIsShareMoney 批量唯一主键查找 是否已经给分享人打款
func (obj *_WkbUsersMgr) GetBatchFromIsShareMoney(isShareMoneys []int8) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("is_share_money IN (?)", isShareMoneys).Find(&results).Error

	return
}

// GetFromShareMoney 通过share_money获取内容 分享获得的金额
func (obj *_WkbUsersMgr) GetFromShareMoney(shareMoney float64) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("share_money = ?", shareMoney).Find(&results).Error

	return
}

// GetBatchFromShareMoney 批量唯一主键查找 分享获得的金额
func (obj *_WkbUsersMgr) GetBatchFromShareMoney(shareMoneys []float64) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("share_money IN (?)", shareMoneys).Find(&results).Error

	return
}

// GetFromWechatOpenid 通过wechat_openid获取内容 第三方登陆 微信授权openid
func (obj *_WkbUsersMgr) GetFromWechatOpenid(wechatOpenid string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("wechat_openid = ?", wechatOpenid).Find(&results).Error

	return
}

// GetBatchFromWechatOpenid 批量唯一主键查找 第三方登陆 微信授权openid
func (obj *_WkbUsersMgr) GetBatchFromWechatOpenid(wechatOpenids []string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("wechat_openid IN (?)", wechatOpenids).Find(&results).Error

	return
}

// GetFromUnionID 通过union_id获取内容 开放平台与公众平台 UnionID
func (obj *_WkbUsersMgr) GetFromUnionID(unionID string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("union_id = ?", unionID).Find(&results).Error

	return
}

// GetBatchFromUnionID 批量唯一主键查找 开放平台与公众平台 UnionID
func (obj *_WkbUsersMgr) GetBatchFromUnionID(unionIDs []string) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("union_id IN (?)", unionIDs).Find(&results).Error

	return
}

// GetFromIsSubscribe 通过is_subscribe获取内容 是否关注 1是 0否
func (obj *_WkbUsersMgr) GetFromIsSubscribe(isSubscribe int8) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("is_subscribe = ?", isSubscribe).Find(&results).Error

	return
}

// GetBatchFromIsSubscribe 批量唯一主键查找 是否关注 1是 0否
func (obj *_WkbUsersMgr) GetBatchFromIsSubscribe(isSubscribes []int8) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("is_subscribe IN (?)", isSubscribes).Find(&results).Error

	return
}

// GetFromIsMovie 通过is_movie获取内容 是否在直播1是,0否
func (obj *_WkbUsersMgr) GetFromIsMovie(isMovie bool) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("is_movie = ?", isMovie).Find(&results).Error

	return
}

// GetBatchFromIsMovie 批量唯一主键查找 是否在直播1是,0否
func (obj *_WkbUsersMgr) GetBatchFromIsMovie(isMovies []bool) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("is_movie IN (?)", isMovies).Find(&results).Error

	return
}

// GetFromSugarGift 通过sugar_gift获取内容 是否发放礼品 1是 0否
func (obj *_WkbUsersMgr) GetFromSugarGift(sugarGift int8) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("sugar_gift = ?", sugarGift).Find(&results).Error

	return
}

// GetBatchFromSugarGift 批量唯一主键查找 是否发放礼品 1是 0否
func (obj *_WkbUsersMgr) GetBatchFromSugarGift(sugarGifts []int8) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("sugar_gift IN (?)", sugarGifts).Find(&results).Error

	return
}

// GetFromCreatedAt 通过created_at获取内容 创建时间
func (obj *_WkbUsersMgr) GetFromCreatedAt(createdAt time.Time) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("created_at = ?", createdAt).Find(&results).Error

	return
}

// GetBatchFromCreatedAt 批量唯一主键查找 创建时间
func (obj *_WkbUsersMgr) GetBatchFromCreatedAt(createdAts []time.Time) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("created_at IN (?)", createdAts).Find(&results).Error

	return
}

// GetFromUpdatedAt 通过updated_at获取内容 更新时间
func (obj *_WkbUsersMgr) GetFromUpdatedAt(updatedAt time.Time) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("updated_at = ?", updatedAt).Find(&results).Error

	return
}

// GetBatchFromUpdatedAt 批量唯一主键查找 更新时间
func (obj *_WkbUsersMgr) GetBatchFromUpdatedAt(updatedAts []time.Time) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("updated_at IN (?)", updatedAts).Find(&results).Error

	return
}

// GetFromImUserType 通过im_user_type获取内容 用户类型:1=普通用户,2=客服
func (obj *_WkbUsersMgr) GetFromImUserType(imUserType int8) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("im_user_type = ?", imUserType).Find(&results).Error

	return
}

// GetBatchFromImUserType 批量唯一主键查找 用户类型:1=普通用户,2=客服
func (obj *_WkbUsersMgr) GetBatchFromImUserType(imUserTypes []int8) (results []*WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("im_user_type IN (?)", imUserTypes).Find(&results).Error

	return
}

//////////////////////////primary index case ////////////////////////////////////////////

// FetchByPrimaryKey primay or index 获取唯一内容
func (obj *_WkbUsersMgr) FetchByPrimaryKey(id int) (result WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("id = ?", id).Find(&result).Error

	return
}

// FetchUniqueByUsersEmailUnique primay or index 获取唯一内容
func (obj *_WkbUsersMgr) FetchUniqueByUsersEmailUnique(email string) (result WkbUsers, err error) {
	err = obj.DB.WithContext(obj.ctx).Table(obj.GetTableName()).Where("email = ?", email).Find(&result).Error

	return
}
